package primitive

type String struct {
	SetMode
	value string
}

func (o *String) IsPresent(f func(v string)) {
	if o.Set() {
		f(o.value)
	}
}

func (o *String) Reset() {
	o.value = ""
	o.SetTo(false)
}

func (o *String) Value() string {
	return o.value
}

func (o *String) SetValue(v string) {
	o.SetTo(true)
	o.value = v
}

func (o *String) Empty() bool {
	return o.value == ""
}

func (o *String) Or(d string) string {
	if o.Set() {
		return o.value
	}
	return d
}
